package com.bfly.mall.wechat.minipro.dto.message;

import com.alibaba.fastjson.JSONObject;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 微信支付成功消息通知
 *
 * @author 长沙商脉科技有限公司
 * @date 2020/12/13 13:57
 */
public class WeChatPaySuccessMessage extends WeChatSubscribeMessage {


    private static final long serialVersionUID = -2414783184041604076L;
    /**
     * 所需下发的订阅模板id
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/13 13:57
     */
    private String templateId = "BQRDWC7u2o5aQymNSUoTcHbA6vDj9qqPPSgtWYJwRn4";

    /**
     * 产品名称
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/13 20:28
     */
    private String productName;

    /**
     * 订单金额
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/13 20:26
     */
    private BigDecimal price;

    /**
     * 下单时间
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/13 20:26
     */
    private Date bookingTime;

    /**
     * 支付时间
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/13 20:26
     */
    private Date payTime;

    @Override
    public String toString() {
        JSONObject json = new JSONObject();
        json.put("touser", getTouser());
        json.put("template_id", getTemplateId());
        json.put("page", getPage());
        json.put("miniprogram_state",getState());

        JSONObject dataJson = new JSONObject();

        JSONObject valueJson = new JSONObject();
        valueJson.put("value", getOrderNo());
        dataJson.put("character_string1", valueJson);

        valueJson = new JSONObject();
        valueJson.put("value", getProductName());
        dataJson.put("thing3", valueJson);

        valueJson = new JSONObject();
        valueJson.put("value", getPrice());
        dataJson.put("amount2", valueJson);

        valueJson = new JSONObject();
        valueJson.put("value", getBookingTime());
        dataJson.put("date6", valueJson);

        valueJson = new JSONObject();
        valueJson.put("value", getPayTime());
        dataJson.put("time5", valueJson);

        super.cutValueLength(dataJson);
        json.put("data", dataJson);
        return json.toJSONString();
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getTemplateId() {
        return templateId;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public Date getBookingTime() {
        return bookingTime;
    }

    public void setBookingTime(Date bookingTime) {
        this.bookingTime = bookingTime;
    }

    public Date getPayTime() {
        return payTime;
    }

    public void setPayTime(Date payTime) {
        this.payTime = payTime;
    }
}
